package com.lft02.runnable;

/**
 * Function: 		A {@code MultiThreadProblem} object With Some FUNCTION.<br/>
 * Reason:   		多个线程同时操作一个对象。<br/>
 * 买火车票的例子：三个线程，同时买票。
 * 发现问题：多个线程操作同一个资源的情况，线程不安全，数据紊乱。
 * <p>
 * Date:            2021-01-26 20:46<br/>
 * <p>
 * Class Name:      MultiThreadProblem<br/>
 * Package Name:    com.lft02.runnable<br/>
 * @author Laifengting / E-mail:laifengting@foxmail.com
 * @version 1.0.0
 * @since JDK 8
 */
public class MultiThreadProblem implements Runnable {
	// 票数
	private int ticketNums = 10;
	
	@Override
	public void run() {
		while (true) {
			if (ticketNums <= 0) {
				break;
			}
			// 模拟延时
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName() + " ---> 拿到了第 " + ticketNums-- + " 票。");
		}
	}
}
